1. Field of the Invention
The present invention relates generally to data file storage subsystems, and more particularly to a system and method for superimposing attributes on hierarchically organized file systems.
2. Related Art
Data processing systems generally store data in file systems containing groups of data files that are hierarchically organized using directories. A file system is a collection of directories and files, and their associated attributes. The directories and files reside on a single device and are linked together by directory entries. Files and file systems may exist on a wide variety of physical media including rotating disks, drums, random access memory, optical disks, and the like. In some data processing systems, individual files may be accessed by multiple hardlinks. A hardlink is a file name and an offset, or index, into a storage medium on which files reside. The offset is the address of the file on the storage medium. By associating an arbitrary file name with a particular offset, the same file may be accessed by different names. Identifying the same file by different names is known as aliasing. Aliasing is accomplished by using multiple hardlinks to the file. That is, a single physical file may be referenced by multiple names, each said name having the same offset into the storage medium.
To organize file systems in a meaningful way, data processing systems often maintain attributes for each file. Attributes store information about the file such as its size, the date it was last modified, and its owner. On conventional systems, file attributes are typically stored as fields in a file's data format. Thus, each file includes one or more fields containing attributes associated with that file. Although files may have identical attributes, the conventional attribute association mechanism stores a copy of the attribute for each file. Several conventional attribute association techniques are currently in use. They shall now be described.
UNIX systems generally store file attributes on a one-to-one basis with the files they describe. For example, UNIX file attributes, such as user id, protection bits, group id, and creation time, are stored in the UNIX on-disk Inode structure. Every file has a complete copy of its attributes. Secure systems employing this technique of file attribute association, such as Trusted Xenix and Trusted Mach, produced by Trusted Information Systems, store security level attributes on a one-to-one basis with the labeled objects. In addition, UNIX systems generally provide at least one global file system attribute that applies to all files in a file system. For example, the read only status flag is a global attribute that is either on or off.
In the well known Andrew File System (AFS), every directory has an Access Control List (ACL). The ACL applies to the directory and each file contained therein. When a file is moved to a new directory, its access rights are changed to those of the new directory. AFS suffers from several deficiencies. In order to avoid confusion about which directory's ACL to inherit, AFS does not allow multiple hardlinks from different directories to a particular file. Furthermore, in order to provide a simple mechanism for avoiding cycles within a file hierarchy, AFS does not allow hardlinks to directories.
Windows 95 is reported to employ a scheme to store long filenames in DOS FAT file systems. To maintain data compatibility with DOS systems, Windows 95 does not modify the FAT format. Rather, it saves long filenames in a supplemental storage area. This supplemental storage area stores a long filename in a one-to-one manner with a corresponding file. Moreover, FAT file systems do not support multiple hardlinks.
Several add-on packages for DOS provide encryption below certain directories. However, such systems do not provide a capability to incorporate multiple hardlinks.
A specific deficiency of the current art is that conventional hierarchically organized file systems store file attributes on a one-to-one basis with files. Modern data processing systems store tremendous numbers of files organized in complex storage schemes. As a result, attributes associated with files on a one-to-one basis in such systems are extremely difficult for human administrators to collect, understand, and change. Accordingly, what is needed is a way to store such attributes in a manner that is concise, simple, easily understandable, and not limited to a one-to-one paradigm.
In addition, the current art does not provide a way to add new file attributes in a concise, easily understandable way that is compatible with existing file systems or applications interacting with files in those existing file systems. This is a significant deficiency since many existing systems will ultimately incorporate new security features. Such features will require the addition of new file attributes in a manner that is easy for a human to understand.
Thus, what is required is a system and method for arbitrarily associating attributes with files and directories in a concise, easily understandable manner while maintaining compatibility with existing file systems and applications which interact with files in existing file systems. The resulting system and method must be easy to use and easy to implement in current and future data processing systems. Moreover, the system must be capable of supporting multiple hardlinks.